package code_rhapsody.array;

/**
 * @author Synhard
 * @version 1.0
 * @class Code5
 * @description 367. 有效的完全平方数
 * 给定一个 正整数 num ，编写一个函数，如果 num 是一个完全平方数，则返回 true ，否则返回 false 。
 *
 * 进阶：不要 使用任何内置的库函数，如 sqrt 。
 *
 * 示例 1：
 *
 * 输入：num = 16
 * 输出：true
 * 示例 2：
 *
 * 输入：num = 14
 * 输出：false
 *
 * @tel 13001321080
 * @email 823436512@qq.com
 * @date 2021-07-22 8:36
 */
public class Code5 {
    public static void main(String[] args) {

    }

    public boolean isPerfectSquare(int x) {
        if (x == 1) {
            return true;
        }
        long low = 0, high = (x >> 1) + 1, mid;
        while (low + 1 != high) {
            mid = (low + high) >> 1;
            if (mid * mid < x) {
                low = mid;
                continue;
            }
            if (mid * mid > x) {
                high = mid;
                continue;
            }
            return true;
        }
        return false;
    }
}
